package org.biloxi.commands;

/**
 * Commands can occur for many reasons. Some CommandListeners may only be 
 * interested in Commands that occur for certain reasons.
 * 
 * Example: 
 *   If a Land card is played.
 *   If a Creature card is discarded. 
 *   Protection from Artifacts. (Damage dealt from Artifacts)
 *   When this card comes into play. (Not any card)
 * 
 * These types of situations are the motivation for a Filter. 
 * Filter attempts to separate logic devoted towards determining when to 
 * do something from logic doing something.
 * 
 * @author Peter.WM.Wong@gmail.com
 * @param <T>
 */
public interface Filter<T> {
	public boolean allow(T t);
}
